package ch3_JosephusArray;

public class JosephusArray {
	private int n;// 总人数
	private int m;// 第m个人出列

	public JosephusArray(int n, int m) {
		this.n = n;
		this.m = m;
		start();
	}

	public void start() {
		// 开始报数的位置
		int k = 1;
		// 初始数组长度，以后出一个长度减1
		int len = n;
		int[] array = new int[n];
		for (int i = 0; i < n; i++) {
			array[i] = i + 1;
		}
		int i = 0; // 数组下标
		int j = 1; // 当前要报的数
		while (len > 0) {
			if (array[i % n] > 0) {
				if (j % m == 0) {
					System.out.print(array[i % n] + " ");
					array[i % n] = -1;
					j = 1;
					i++;
					len--;
				} else {
					i++;
					j++;
				}
			} else {
				i++;
			}
		}
	}
}
